const path = require('path')

class MyPlugin{
  apply(compiler){
    // 通过 compiler.hooks.emit 访问钩子
    // 然后通过 tap 方法注册任务
    // tap 方法接收两个参数：插件名称、需要挂载的函数
    // compilation 可以理解为打包过程中的上下文，所有打包结果都会放到这个对象中
    compiler.hooks.emit.tap('MyPlugin',compilation=>{
      // compilation.assets  资源文件信息，键就是文件名称
      for(const name in compilation.assets){
        // console.log(name,'---------') // 文件名称
        // console.log(compilation.assets[name].source())// 文件内容
        if(name.endsWith('.js')){
          const source = compilation.assets[name].source()
          // source 方法用于获取文件内容
          compilation.assets[name].source = ()=>source.replace(/\/\*\*\*\*\*\*\//g,'')
          // size 返回大小，是必须的方法
          compilation.assets[name].size = ()=>source.length
        }
      }
    })
  }
}


module.exports = {
  mode: "none",
  entry: "./src/index.js",
  output: {
    filename: "bundle.js",
    path: path.join(__dirname, "dist")
  },
  plugins:[
    new MyPlugin()
  ]
}